The present disclosure relates generally to software update mechanisms that verify software prior to installation, and relates more specifically to implementation of software updates with a secure verification prior to installation.
Various types of devices running software applications, including embedded devices that often operate on a standalone basis, may be provided with software updates over the course of their useful lifetime cycle. In the case of computer devices, such as desktop PCs and other general purpose computers, updates are typically performed through a communication link, such as may be provided with a network connection to a LAN, WAN, intranet or internet. A communication link permits the computer to download or retrieve updates that can be installed on the computer with relative ease.
In the case of standalone devices that include a computational engine and software, such as is often present in embedded systems, software updates tend to be implemented with a physical component. For example, some standalone devices may be updated by replacing a ROM that is programmed to include the new software update. Another approach might be to replace a RAM card or load software into semi-permanent memory from magnetic or electronic media. In some instances, embedded systems are updated by applying a communication link, such as a network connection, to the device to upload new software.
One issue that arises in relation to the installation of software updates is the verification of the software update prior to installation and execution of the software. The verification is often conducted to ensure that the software is not corrupted, modified or infected with viruses, for example. One popular technique to verify software is to compute a checksum for a given file used for the software update installation. Often, the software update is in the form of a binary or image type file, to which a checksum algorithm can readily be applied. A typical checksum algorithm is the MD5 (Message-digest algorithm 5) algorithm, in which blocks of the file to which the algorithm is applied are combined according to a recursive algorithm to produce a highly unique number that represents the file content. MD5 is sometimes referred to as a cryptographic hash function, and provides a 128 bit hash value or checksum. Due to the extremely low likelihood that different file contents can produce the same checksum, MD5 is often used to validate the integrity of an accompanying file.
Due to the potential security issues involved for software updates, such as corruption, modification or malicious code being embedded in a software update file, techniques have been developed to further secure software files for software updates. The security measures may include techniques to secure the file content and/or the checksum value against tampering or corruption. One such security technique is the application of encryption to the file content and/or checksum value, such as may be achieved through the use of public/private key pairs used to encrypt and decrypt data. This type of asymmetric encryption uses the private key to decrypt data that is encrypted using the public key. If the software of a particular device were to be updated using this type of security, the private key would be distributed to the device to be updated, which tends to thwart the purpose of the public/private key pair security design.
Another security measure that might be used to secure data is to obtain and apply a digital certificate in conjunction with an electronic signature. The digital certificate provides a high level of verification that a document originates from a claimed source. Typically, a document or data is processed to produce a relatively unique value, such as a hash value or a checksum. The hash value or checksum is encrypted using a signer's private key of an asymmetrical public/private key pair to produce a digital signature. A digital certificate is formed using the digital signature, resulting in digitally signed data that can be transmitted and authenticated at a remote location by extracting the original data, computing the hash value or checksum for the data, decrypting the digital signature using the public key of the public/private key pair to obtain the original hash value or checksum, and then comparing the computed and transmitted hash values or checksums to determine whether the digital signature is valid and to authenticate the source and integrity of the data.
However, digital certificates are often provided with an expiration date to help ensure current validity of the certificate and resulting digital signatures. In addition, digital certificates are often checked for validity themselves to ensure they are current and valid, which checking is often accomplished over a communication link to maintain the digital certificate on an ongoing basis. In the case of standalone devices, the use of a digital certificate represents a generally costly and high maintenance security technique, that may permit the introduction of other gaps in security by assuming a communication link with the device that is to be updated.
Another approach to providing a secure update environment is to implement kernel level protection to create a trusted environment for updates. However, this approach suffers from some of the same drawbacks noted above, in that security features for software updates would be delivered to the device to permit the update, thereby exposing the security features for examination. In addition, a number of systems often operate in full kernel mode, which is typically disabled to implement a trusted environment in accordance with kernel level protection.
Yet another option for secure software updates is to utilize a hardware encrypted device with an onboard software update. However, this type of security implementation introduces compatibility issues with the device to be updated or its operating system, so that such hardware encrypted devices are not usable with a number of systems. In addition, the hardware encryption usually operates by accessing a digital certificate or asymmetrical or symmetrical encryption key, which access usually relies on a communication link provided to the device being updated.
In general, there is no apparent and readily useful technique for validating a software update prior to installation on a device that does not involve the additional cost, complexity and potential security gaps of a communication link.